diff --git a/drivers/dfu/Makefile b/drivers/dfu/Makefile
index cebea30..61f2b71 100644
--- a/drivers/dfu/Makefile
+++ b/drivers/dfu/Makefile
@@ -10,3 +10,4 @@
 obj-$(CONFIG_DFU_NAND) += dfu_nand.o
 obj-$(CONFIG_DFU_RAM) += dfu_ram.o
 obj-$(CONFIG_DFU_SF) += dfu_sf.o
+obj-$(CONFIG_DFU_TFTP) += dfu_tftp.o
diff --git a/drivers/dfu/dfu_tftp.c b/drivers/dfu/dfu_tftp.c
new file mode 100644
index 0000000..cd71708
--- /dev/null
+++ b/drivers/dfu/dfu_tftp.c
@@ -0,0 +1,65 @@
+/*
+ * (C) Copyright 2015
+ * Lukasz Majewski <l.majewski@majess.pl>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <errno.h>
+#include <dfu.h>
+
+int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len,
+		   char *interface, char *devstring)
+{
+	char *s, *sb;
+	int alt_setting_num, ret;
+	struct dfu_entity *dfu;
+
+	debug("%s: name: %s addr: 0x%x len: %d device: %s:%s\n", __func__,
+	      dfu_entity_name, addr, len, interface, devstring);
+
+	ret = dfu_init_env_entities(interface, devstring);
+	if (ret)
+		goto done;
+
+	/*
+	 * We need to copy name pointed by *dfu_entity_name since this text
+	 * is the integral part of the FDT image.
+	 * Any implicit modification (i.e. done by strsep()) will corrupt
+	 * the FDT image and prevent other images to be stored.
+	 */
+	s = strdup(dfu_entity_name);
+	sb = s;
+	if (!s) {
+		ret = -ENOMEM;
+		goto done;
+	}
+
+	strsep(&s, "@");
+	debug("%s: image name: %s strlen: %d\n", __func__, sb, strlen(sb));
+
+	alt_setting_num = dfu_get_alt(sb);
+	free(sb);
+	if (alt_setting_num < 0) {
+		error("Alt setting [%d] to write not found!",
+		      alt_setting_num);
+		ret = -ENODEV;
+		goto done;
+	}
+
+	dfu = dfu_get_entity(alt_setting_num);
+	if (!dfu) {
+		error("DFU entity for alt: %d not found!", alt_setting_num);
+		ret = -ENODEV;
+		goto done;
+	}
+
+	ret = dfu_write_from_mem_addr(dfu, (void *)addr, len);
+
+done:
+	dfu_free_entities();
+
+	return ret;
+}
diff --git a/include/dfu.h b/include/dfu.h
index 7d31abd..2153d00 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -207,5 +207,31 @@
 }
 #endif
 
+/**
+ * dfu_tftp_write - Write TFTP data to DFU medium
+ *
+ * This function is storing data received via TFTP on DFU supported medium.
+ *
+ * @param dfu_entity_name - name of DFU entity to write
+ * @param addr - address of data buffer to write
+ * @param len - number of bytes
+ * @param interface - destination DFU medium (e.g. "mmc")
+ * @param devstring - instance number of destination DFU medium (e.g. "1")
+ *
+ * @return 0 on success, otherwise error code
+ */
+#ifdef CONFIG_DFU_TFTP
+int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len,
+		   char *interface, char *devstring);
+#else
+static inline int dfu_tftp_write(char *dfu_entity_name, unsigned int addr,
+				 unsigned int len, char *interface,
+				 char *devstring)
+{
+	puts("TFTP write support for DFU not available!\n");
+	return -ENOSYS;
+}
+#endif
+
 int dfu_add(struct usb_configuration *c);
 #endif /* __DFU_ENTITY_H_ */
